/*********************************
*-- 33 KDH Knieja ---------------*
*-- im. Harcerzy Września 1939 --*
*-- autor: Marcin Rzepisko ------*
*-- data: 2013-11-10 ------------*
**********************************/

package net.kdh.knieja.dao.impl;

import java.util.Arrays;
import java.util.List;
import net.kdh.knieja.dao.klasy.filtry.FiltrArtykulowDAO;
import net.kdh.knieja.dao.klasy.filtry.FiltrDAO;
import net.kdh.knieja.model.system.Artykul;
import net.kdh.knieja.dao.interfejsy.ObslugaArtykulowDAO;
import net.kdh.knieja.dao.interfejsy.ObslugaPostowDAO;
import net.kdh.knieja.dao.klasy.ArtykulDAO;
import net.kdh.knieja.dao.narzedzia.NarzedziaZaslepekDAO;
import net.kdh.knieja.model.wspolne.wyjatki.BladWarstwyDaoWyjatek;

/**
 *
 * @author rz.marcin@gmail.com
 */
public class ObslugaArtykulowDaoImpl implements ObslugaArtykulowDAO {
    private ArtykulDAO artykulDAO = new ArtykulDAO();
    @Override
    public List<Artykul> pobierzArtykuly(String... idArtykulow) throws BladWarstwyDaoWyjatek {
        FiltrDAO filtr = new FiltrArtykulowDAO();
        ((FiltrArtykulowDAO)filtr).getIdArtykulow().addAll(Arrays.asList(idArtykulow));
        List<Artykul> lista = artykulDAO.pobierzListeElementow(filtr);
        ObslugaPostowDAO obslugaPostowDao = new ObslugaPostowDaoImpl();
        for(Artykul artykul : lista) {
            artykul.setPosty(obslugaPostowDao.pobierzPostyArtykulu(artykul.getIdArtykulu()));
        }
        return lista;
    }

    @Override
    public String dodajArtykul(Artykul artykul) throws BladWarstwyDaoWyjatek {
        //walidacja czy poprawny? chyba już istnieje
        return artykulDAO.zapisz(artykul);
    }

    @Override
    public void edytujArtykul(Artykul artykul) throws BladWarstwyDaoWyjatek {
        artykulDAO.aktualizuj(artykul);
    }

    @Override
    public void usunArtykuly(String... idArtykulow) throws BladWarstwyDaoWyjatek {
        for(String id : idArtykulow)
            artykulDAO.usun(id);
    }

    @Override
    public void oznaczArtykulyDoUsuniecia(String... idArtykulow) throws BladWarstwyDaoWyjatek {
    }

    @Override
    public List<Artykul> pobierzWidoczneArtykuly(String... idArtykulow) throws BladWarstwyDaoWyjatek {
        return NarzedziaZaslepekDAO.pobierzArtykulLista();
    }

    @Override
    public void przywrocUsunieteArtykuly(String... idArtykulow) throws BladWarstwyDaoWyjatek {
    }
}
